package work.xiaohong.arithmetic.SortArithmetic;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;

/**
 * @author xiaohong
 * @version 1.0
 * @date 2021/10/26 0026 10:38
 * @description 排序测试类
 */
public class SortTest {

    public static void main(String[] args) throws Exception {
        // Integer是包装类型 实现了Comparable接口
        Integer arr[] = {8,4,7,1,9,0,3,2,5,6};
        // 冒泡排序
//        Bubble.bubbleSort(arr);
        // 选择排序
//        Selection.selectSort(arr);
        // 插入排序
//        Insertion.insertSort(arr);
        // 希尔排序
//        Shell.shellSort(arr);
        // 比较插入排序和希尔排序的耗时
//        insertionToShell();
        // 归并排序
//        Merge.mergeSort(arr);
        // 快速排序
        Quick.quickSort(arr);

        System.out.println(Arrays.toString(arr));

    }

    /**
     * 希尔排序和插入排序比较
     */
    public static void insertionToShell() throws Exception {
        ArrayList<Integer> list = new ArrayList<>();
        BufferedReader reader = new BufferedReader(new FileReader("a.txt"));
        String line = null;
        while ((line = reader.readLine()) != null){
            list.add(Integer.valueOf(line));
        }

        // 转换成数组
        Integer[] arr = new Integer[list.size()];
        list.toArray(arr);

        Long start = System.currentTimeMillis();

//        Insertion.insertSort(arr);  // 623

        Shell.shellSort(arr);  // 18

        Long end = System.currentTimeMillis();

        System.out.println(end-start);

    }


}
